iT邦幫忙

DAY 4
3

我與BASH shell scripting的每一天系列 第 4

我與BASH的每一天 - [4] 利用awk來擷取特定欄位-2

  • 分享至 

  • xImage
  •  

昨天快速示範了awk命令的用法,我們使用awk中的print指令,輕易地取得特定欄位的內容。awk預設是以空白符號來做為欄位的切割,但是當我們要擷取的內容中沒有空白符號,或是夾雜在特定符號中怎麼辦呢? awk可以讓我們自行設定分隔符號。
昨天快速示範了awk命令的用法,我們使用awk中的print指令,輕易地取得特定欄位的內容。awk預設是以空白符號來做為欄位的切割,但是當我們要擷取的內容中沒有空白符號,或是夾雜在特定符號中怎麼辦呢? awk可以讓我們自行設定分隔符號。

若要自行設定awk命令中的分隔符號,必須使用'FS'這個關鍵字來指定。例如FS=".”,表示將".”點句符號當成欄位分隔。但因為FS的設定必須在awk指令執行之前就要設定,所以必須再加上BEGIN這個關鍵字才行。請看以下這個例子,我們想要取得Linux kernel的次版本編號:

# 利用 uname -r 傳回Linux kernel的版本
uname -r
2.6.18-238.el5PAE

# 利用awk取得Linux kernel次版本編號: 18-238,位在第二個句點之後,第三個句點之前
# 也就是若以句點來分割欄位的話,它位在第三個欄位上
uname -r | awk 'BEGIN {FS="."}; {print $3}'
18-238

簡單說明一下,awk命令間要使用分號';’,而BEGIN的意思就是讓 FS="." 這個設定在 {print $3} 指令之前執行。

[本系列文章]

我與BASH的每一天 - [1]利用bc命令來取得數字字串中的特定欄位值
我與BASH的每一天 - [2]直取字串變數中的特定欄位值
我與BASH的每一天 - [3] 利用awk來擷取特定欄位


上一篇
我與BASH的每一天 - [3] 利用awk來擷取特定欄位
下一篇
我與BASH的每一天 - [5] 利用awk來擷取特定欄位-3
系列文
我與BASH shell scripting的每一天31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
timloo
iT邦研究生 2 級 ‧ 2012-09-29 11:21:06

awk查了一下,字典沒這個字,
owk也沒有,owl有這個字。

awk史上有名的三個計算機學機的英文名字的第一個字組成。

那個時代,教授要自己做工具。

軟體的舊石器時代。editor應該被很多人做吧,駭客文化,就是看你的code還有可改進的地方,接過來寫,有時候,接手的人還改的比原作者好。

awk可能有40歲以上了。

這例子不錯耶,看了有feeling

我要留言

立即登入留言